/**
 * 通用js方法封装处理
 */

// 回显数据字典
export function selectDictLabel (datas, value) {
  if (value === undefined) {
    return ''
  }
  var actions = []
  Object.keys(datas).some((key) => {
    // eslint-disable-next-line eqeqeq
    if (datas[key].value == ('' + value)) {
      actions.push(datas[key].label)
      return true
    }
  })
  if (actions.length === 0) {
    actions.push(value)
  }
  return actions.join('')
}

// 回显数据字典（字符串、数组）
export function selectDictLabels (datas, value, separator) {
  if (value === undefined || value.length === 0) {
    return ''
  }
  if (Array.isArray(value)) {
    value = value.join(',')
  }
  var actions = []
  // eslint-disable-next-line eqeqeq
  var currentSeparator = undefined == separator ? ',' : separator
  var temp = value.split(currentSeparator)
  Object.keys(value.split(currentSeparator)).some((val) => {
    var match = false
    Object.keys(datas).some((key) => {
      if (datas[key].value === ('' + temp[val])) {
        actions.push(datas[key].label + currentSeparator)
        match = true
      }
    })
    if (!match) {
      actions.push(temp[val] + currentSeparator)
    }
  })
  return actions.join('').substring(0, actions.join('').length - 1)
}

// 天气
export const weatherOption = {
  weatherCode: {
    晴: 100,
    多云: 101,
    少云: 102,
    晴间多云: 103,
    阴: 104,
    有风: 200,
    平静: 201,
    微风: 202,
    和风: 203,
    清风: 204,
    '强风/劲风': 205,
    疾风: 206,
    大风: 207,
    烈风: 208,
    风暴: 209,
    狂爆风: 210,
    飓风: 211,
    龙卷风: 212,
    热带风暴: 213,
    阵雨: 300,
    强阵雨: 301,
    雷阵雨: 302,
    强雷阵雨: 303,
    雷阵雨伴有冰雹: 304,
    小雨: 305,
    中雨: 306,
    大雨: 307,
    极端降雨: 308,
    '毛毛雨/细雨': 309,
    暴雨: 310,
    大暴雨: 311,
    特大暴雨: 312,
    冻雨: 313,
    小到中雨: 314,
    中到大雨: 315,
    大到暴雨: 316,
    暴雨到大暴雨: 317,
    大暴雨到特大暴雨: 318,
    雨: 399,
    小雪: 400,
    中雪: 401,
    大雪: 402,
    暴雪: 403,
    雨夹雪: 404,
    雨雪天气: 405,
    阵雨夹雪: 406,
    阵雪: 407,
    小到中雪: 408,
    中到大雪: 409,
    大到暴雪: 410,
    雪: 499,
    薄雾: 500,
    雾: 501,
    霾: 502,
    扬沙: 503,
    浮尘: 504,
    沙尘暴: 507,
    强沙尘暴: 508,
    浓雾: 509,
    强浓雾: 510,
    中度霾: 511,
    重度霾: 512,
    严重霾: 513,
    大雾: 514,
    特强浓雾: 515,
    热: 900,
    冷: 901,
    未知: 999
  }
}

// 全国地图
export const mapOption = {
  basicOption: {
    title: [{
      left: 'left',
      text: '全国',
      textStyle: {
        fontSize: 16,
        color: '#fff'
      }
    },
    {
      text: '',
      left: 'left',
      top: '30',
      textStyle: {
        fontSize: 16,
        color: '#24CFF4'
      }
    }
    ],
    tooltip: { // 提示框组件
      trigger: 'item', // 触发类型,'item'数据项图形触发，主要在散点图，饼图等无类目轴的图表中使用。 'axis'坐标轴触发，主要在柱状图，折线图等会使用类目轴的图表中使用。
      // triggerOn:"none",//提示框触发的条件,'mousemove'鼠标移动时触发。'click'鼠标点击时触发。'mousemove|click'同时鼠标移动和点击时触发。'none'不在 'mousemove' 或 'click' 时触发
      showContent: true, // 是否显示提示框浮层
      alwaysShowContent: false, // 是否永远显示提示框内容
      showDelay: 0, // 浮层显示的延迟，单位为 ms
      hideDelay: 100, // 浮层隐藏的延迟，单位为 ms
      enterable: false, // 鼠标是否可进入提示框浮层中
      confine: false, // 是否将 tooltip 框限制在图表的区域内
      transitionDuration: 0.4, // 提示框浮层的移动动画过渡时间，单位是 s,设置为 0 的时候会紧跟着鼠标移动
      backgroundColor: 'transparent', // 标题背景色
      // position:['50%', '50%'],                //提示框浮层的位置，默认不设置时位置会跟随鼠标的位置,[10, 10],回掉函数，inside鼠标所在图形的内部中心位置，top、left、bottom、right鼠标所在图形上侧，左侧，下侧，右侧，
      borderColor: '#ccc', // 边框颜色
      borderWidth: 0, // 边框线宽
      padding: 0, // 图例内边距，单位px  5  [5, 10]  [5,10,5,10]
      borderRadius: 5,
      textStyle: {
        fontSize: 10
      }, // 文本样式
      // formatter: '{b}',
      formatter: (param) => {
        let val = typeof (param.value) === 'number' ? param.value : param.value[2]
        if (isNaN(val)) {
          val = 0
        }
        return '<div style="text-align:left;padding: 15px;font-weight: bolder;border-radius: 5px;background: linear-gradient(to right, rgba(36, 118, 183, 1) , rgba(36, 118, 183, .5))">' +
          '<div style="color: #26C4EB;padding-bottom: 10px;">' +
          '<span>● </span>' +
          '<span>' + param.name + '</span>' +
          '</div>' +
          '<div style="padding: 2px 16px;">' +
          '<span>' + val + '</span>' +
          '</div>' +
          '</div>'
      }
    },
    // 左侧导航视觉映射组件
    visualMap: {
      type: 'continuous', // 连续型
      min: 0, // 值域最小值，必须参数
      max: 0, // 值域最大值，必须参数
      text: ['数量'],
      left: 0,
      bottom: 0,
      calculable: true,
      seriesIndex: [0],
      inRange: {
        color: ['#24CFF4', '#2E98CA', '#1E62AC']// 指定数值从低到高时的颜色变化
      },
      textStyle: {
        color: '#24CFF4'// 值域控件的文本颜色
      }
    },
    // 新建一个地理坐标系 geo
    geo: {
      // map: 'china',//地图类型为中国地图
      // itemStyle:{ // 定义样式
      //   normal:{       // 普通状态下的样式
      //     areaColor:'#6699CC',
      //     borderColor: '#fff',
      //   },
      //   emphasis: {         // 高亮状态下的样式
      //     areaColor: '#e9fbf1'
      //   }
      // }
    }
  },
  seriesOption: {
    type: 'map',
    // roam: false,
    zoom: 1.2,
    nameMap: {
      china: '中国'
    },
    label: {
      normal: {
        show: true,
        textStyle: { // 省份标签
          color: '#fff',
          fontSize: 10
        },
        color: '#fff',
        formatter: p => {
          // switch (p.name) {
          //   case '内蒙古自治区':
          //     p.name = "内蒙古"
          //     break;
          //   case '西藏自治区':
          //     p.name = "西藏"
          //     break;
          //   case '新疆维吾尔自治区':
          //     p.name = "新疆"
          //     break;
          //   case '宁夏回族自治区':
          //     p.name = "宁夏"
          //     break;
          //   case '广西壮族自治区':
          //     p.name = "广西"
          //     break;
          //   case '香港特别行政区':
          //     p.name = "香港"
          //     break;
          //   case '澳门特别行政区':
          //     p.name = "澳门"
          //     break;
          // }
          return p.name
          // return p.name + '\n' + ((isNaN(p.value) || !p.value) ? '' : p.value);
        }
      },
      emphasis: {
        show: true,
        textStyle: {
          color: '#f75a00'
        }
      }
    },
    itemStyle: {
      normal: {
        areaColor: '#24CFF4',
        borderColor: '#53D9FF',
        borderWidth: 1.3,
        shadowBlur: 15,
        shadowColor: 'rgb(58,115,192)',
        shadowOffsetX: 7,
        shadowOffsetY: 6
      },
      emphasis: {
        areaColor: '#8dd7fc',
        borderWidth: 1.6,
        shadowBlur: 25
      }
    }
  }
}
